﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Security.Cryptography;
using LCTMoodle.Models.DataModels;
using LCTMoodle.Models.ViewModels;
using LCTMoodle.Service;
using LCTMoodle.Helper;

namespace LCTMoodle.Controllers
{
    public class DangKyController : Controller
    {
        #region Trang Chủ
        /// <summary>
        /// Trang đăng ký
        /// </summary>
        public ActionResult Index()
        {
            #region Kiểm tra quyền
            if (TienIch.daDangNhap())
            {
                TempData["ThongBao"] = new string[]
                    {
                        "Đã đăng nhập"
                    };
                return RedirectToAction("Index", "TrangChu");
            }
            #endregion Kiểm tra quyền
            return View();
        }
        #endregion Trang Chủ

        #region Xử lý đăng ký
        /// <summary>
        /// Xử lý đăng ký
        /// </summary>
        /// <param name="form">Form chứa thông tin đăng ký</param>
        public ActionResult XuLyDangKy(FormCollection form)
        {
            //Khai báo lớp mã hoá MD5
            MD5 md5Hash = MD5.Create();

            //gán giá trị mới cho đối tượng nguoiDung
            NguoiDungDataModel nguoiDung = new NguoiDungDataModel();
            nguoiDung.tenDangNhap = form["TenDangNhap"].ToString();
            nguoiDung.matKhau = TienIch.MaHoaMD5(md5Hash, form["MatKhau"].ToString());
            nguoiDung.email = form["Email"].ToString();
            nguoiDung.hoTen = form["HoTen"].ToString();
            nguoiDung.soDienThoai = "";
            
            //Lưu mã người dùng mới
            int maNguoiDungMoi = NguoiDungService.themNguoiDung(nguoiDung);

            //Kiểm tra người dùng mới có được tạo hay không
            if (maNguoiDungMoi != 0)
            {
                //Gán quyền đăng nhập cho người dùng mới đăng ký
                Session["NguoiDung"] = NguoiDungService.layNguoiDungTheoMaNguoiDung(maNguoiDungMoi);

                //Xử lý bộ đếm
                int[] boDem = (int[])HttpContext.Application["BoDem"];
                //Nếu tồn tại session người dùng => thành viên
                boDem[1]++; //Tăng thành viên trực tuyến
                boDem[0]--; //Giảm khách trực tuyến

                //Thông báo đăng ký thành công
                TempData["ThongBao"] =
                    new string[] 
                    {
                        "Đăng ký thành công",
                        "Tot"
                    };
                return RedirectToAction("Index", "TrangChu");
            }
            else
            {
                //Thông báo nếu đăng ký thất bại
                TempData["ThongBao"] =
                    new string[] 
                    {
                        "Đăng ký thất bại"                        
                    };
                return RedirectToAction("Index", "DangKy");
            }

        }
        #endregion Xử lý đăng ký

        #region Kiểm tra tên đăng nhập hợp lệ
        /// <summary>
        /// Kiểm tra tên đăng nhập hợp lệ
        /// </summary>
        /// <param name="tenDangNhap">Tên đăng nhập</param>
        public ContentResult KiemTraTenDangNhapHopLe(string tenDangNhap)
        {
             NguoiDungViewModel nguoiDung = NguoiDungService.layNguoiDungTheoTenDangNhap(tenDangNhap);

             if (nguoiDung == null)
             {
                 return Content("OK");
             }
             return Content("Tên đăng nhập đã tồn tại");
        }
        #endregion Kiểm tra tên đăng nhập hợp lệ

    }
}
